/*
 * @Description: 对搜索项数据的处理
 */

import { cloneDeep, forIn, isString, isArray, omit, includes, eq, split } from 'lodash-es'
import dayjs from 'dayjs'
// 把搜索组件绑定的值转换为后台需要的格式
export function transfromForBackend(data: any) {
  let condition = cloneDeep(data)
  forIn(condition, (value, key) => {
    if (value) {
      if (isArray(value)) {
        condition[key] = {
          type: 'range',
          key: '',
          value: {
            start: value[0] || '',
            end: value[1] || ''
          }
        }
      } else if (isString(value)) {
        condition[key] = {
          type: 'text',
          key: '',
          value: value
        }
      } else {
        condition[key]['type'] = 'json'
      }
    } else {
      condition = omit(condition, key)
    }
  })
  return condition
}

// 还原搜索数据为搜索组件绑定的格式
export function transfromForFrontend(condition: any) {
  // console.log('condition----', condition);
  if (condition) {
    forIn(condition, (value, key) => {
      if (value && value.type) {
        if (value.type === 'json') {
          condition[key] = omit(value, 'type')
        } else if (value.type === 'range') {
          condition[key] = [value.value.start, value.value.end]
        } else if (value.type === 'text') {
          condition[key] = value.value
        }
      }
    })
    return condition
  }
  return {}
}

// 过滤掉type属性
export function filterOutType(condition: any) {
  let result = {}
  if (condition) {
    forIn(condition, (value, key) => {
      if(eq(condition[key].type, 'text')){
         // 文本数据直接赋值
        condition[key] = condition[key].value
      }else if(eq(condition[key].type, 'range')){       
        // 范围数据拆分
        let keyArr = split(key, '|')
        condition[keyArr[0]] = dayjs(condition[key].value.start).format('YYYY-MM-DD HH:mm:ss')
        condition[keyArr[1]] = dayjs(condition[key].value.end).format('YYYY-MM-DD 23:59:59')
        condition = omit(condition, key)
      }else if(eq(condition[key].type, 'json')){
        // 对象数据要去除type属性
        condition[key] = omit(value, 'type')
      }
    })
    result = condition
  }
  // console.log('result----', result);
  return result;
}
